package com.example.algorithm.array;

import java.util.Arrays;

/**
 * @author : zhy
 * 求有序数组平方，并且有序排列
 * @since : 2022/7/21
 */
public class ArraySquare {

    /**
     * 返回平方之后的数组
     * 在这里，因为有负数和正数，在返回值方面，最大的数字都在边界中，所以
     * 以边界为临界条件去处理
     * @param nums
     * @return
     */
    public int[] sortedSquares(int[] nums) {
        int right=nums.length-1;
        int left=0;
        int k=right;
        int []sortNum=new int[right+1];
        while (left<=right)
        {
            if(nums[right]*nums[right]>nums[left]*nums[left]) {
                sortNum[k--]=nums[right]*nums[right];
                right--;
            }else {
                sortNum[k--]=nums[left]*nums[left];
                left++;
            }
        }
        return sortNum;

    }

    public static void main(String[] args) {
        int []num={-7,-5,0,1,3,5,9};
        ArraySquare arraySquare = new ArraySquare();
        int[] squares = arraySquare.sortedSquares(num);
        Arrays.stream(squares).forEach(System.out::println);
    }
}
